package wikipedia
{
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.utils.Dictionary;
	import flash.xml.XMLNode;
	import modelos.Utiles;

	public class WikiManager
	{
		//================================================================================
		private var url_principal : String;
		private var paginas : Dictionary;
		//================================================================================
		
		//--------------------------------------------------------------------------------
		public function WikiManager(lang : String = "en")
		{
			this.paginas = new Dictionary();
			SetearIdioma(lang);
		}

		//================================================================================
		//ACCIONES
		//================================================================================

		//--------------------------------------------------------------------------------
		public function SetearIdioma(lang : String)
		{
			//validar parametros

			this.url_principal = Utiles.StringFormat('http://{0}.wikipedia.org/wiki/Special:Export/', lang);
		}

		//--------------------------------------------------------------------------------
		public function CargarPagina(url_pagina : String, callback_exito : Function)
		{
			//validar parametros
			
			if (paginas[url_pagina]) 
			{
				callback_exito(paginas[url_pagina]);
			}
			
			var url_completa : String = url_principal + url_pagina;
			
			var cargador : URLLoader = new URLLoader();
			cargador.addEventListener(Event.COMPLETE, Utiles.CallbackReemplazando(CargarPaginaFinalizado, cargador, url_pagina, callback_exito));
			cargador.load(new URLRequest(url_completa));
		}

		//================================================================================

		//--------------------------------------------------------------------------------
		private function CargarPaginaFinalizado(cargador : URLLoader, url_pagina : String, callback_exito : Function)
		{
			//validar parametros

			var pagina : WikiPage = new WikiPage(cargador.data);
			paginas[url_pagina] = pagina;
			
			callback_exito(paginas[url_pagina]);
		}
	}
}